﻿namespace SvCore.CmdLine;

public partial class SvCmd : ISv
{
    public string Name()
    {
        return nameof(SvCmd);
    }

    public void Init()
    {
        loger.Debug($"{Name()} Init");

        Core.DictEvt[EvtType.EvTypeCmd] = Exec;
    }

    public void Run()
    {
        loger.Debug($"{Name()} Run");
        while (true)
        {
            string Cmd = Console.ReadLine()??"";
            string[] args = Cmd.Split(UtilEnum.分隔符空格);
            if (args.Length > 0)
            {
                var cmd = new CmdInfo() { Cmd = args[0].ToLower(), Args = args };
                var evt = new Evt() { Type = EvtType.EvTypeCmd, Data = cmd};
                Core.QueueEvt.Enqueue(evt);
            }
            Thread.Sleep(100);
        }
    }

    public void Destroy()
    {
        loger.Debug($"{Name()} Destroy");
    }

    public void Exec(Evt evt)
    {
        var cmd = (CmdInfo)evt.Data;
        Exec(cmd);
    }
}
